// 1.引入
import Vue from "vue";
import vuex from 'vuex';
const vue = new Vue

// 2.挂载
Vue.use(vuex)


// 3.实例化对象
export default new vuex.Store({
    // 1. 存储共享数据
    state: {
        // 定义空数组
        goodslist: []
    },
    // 2.修改state数据的唯一同步方法
    mutations: {
        // 配置方法将数据赋值给list
        getlist(state, val) {
            state.goodslist = val
        },
        // 大选控制小选
        getflag(state, val) {
            state.goodslist.forEach(item => item.goods_state = val)
        }
    },
    // 3.异步修改state数据底层通过 mutations
    actions: {
        // 配合mutations发送axios获取数据
        async setlist(store) {

            // 发送axios获取数据
            let res = await vue.$axios({
                url: '/api/cart'
            })
            // 将数据赋值给数组
            store.commit("getlist", res.data.list)

        }

    },
    // 4.计算属性vue的computed
    getters: {
        // 总数量
        totalCount(state) {
            return state.goodslist.reduce((sum, item) => {
                if (item.goods_state) {
                    sum += item.goods_count
                }
                return sum
            }, 0)
        },
        // 总价格
        totalPrice(state) {
            return state.goodslist.reduce((sum, item) => {
                if (item.goods_state) {
                    sum += item.goods_count * item.goods_price
                }
                return sum
            }, 0)
        },
        // 小选控制大选
        getbool(state) {
            console.log();
            return state.goodslist.every(item => item.goods_state)
        }

    }
})